package com.xsomnus.Distributed_Architecture.lb;

import java.util.List;

/**
 * @author @xsomnus666_xiawenye★
 * @since 2019/7/19 0019 10:51
 * - 才需学也,学需静也/非淡泊无以明志，非宁静无以致远
 */
public abstract class AbstractLoadBalancer implements LoadBlancer {

    @Override
    public Node select(List<Node> invokers, String url) {
        // 如果当前可选节点数量为空， 直接返回空
        if (invokers == null || invokers.isEmpty()) {
            return null;
        }
        // 如果当前节点数量为1个, 直接返回该节点
        if (invokers.size() == 1) {
            return invokers.get(0);
        }

        return doSelect(invokers, url);
    }

    protected abstract Node doSelect(List<Node> invokers, String url);



}
